def ii(a = False):
i = input().split()
try:
if len(i) == 1 and not a:
return int(i[0])
return list(map(int, i))
except Exception:
if len(i) == 1 and not a:
return i[0]
return i
def gcd(a, b):
if a == 0:
return b
return gcd(b % a, a)
for _ in range(ii()):
n = ii()
s = input()
index = 0
for i in range(n):
if s[i]!='0':
index = i
break
t = 0
s = s[index:]
prev = s[0]
for i in s:
if prev!=i:
t+=1
prev = i
print(t)
#include <bits/stdc++.h>
#define int long long
#define vi vector<int>
#define pb push_back
#define inf INT_MAX
#define minf INT_MIN
#define mod 1000000007
#define bits1 __builtin_popcountl
#define fio \
ios_base::sync_with_stdio(NULL); \
cin.tie(NULL);
using namespace std;
signed main() {
fio int t ;
cin>>t;
while(t--)
{
int n ;
cin>>n ;
string str;
cin>>str ;
int flag=0 ;
int plag=0 ;
int ctr=0 ;
int ptr=0 ;
for(int i=0;i<n;i++)
{
if(str[i]=='1')
{
flag=1 ;
}
if(((str[i]=='0'&&(plag%2)==0)||(str[i]=='1'&&(plag%2)==1))&&flag)
{
ctr++ ;
plag++ ;
}
}
flag=0 ;
plag=0 ;
for(int i=0;i<n;i++)
{
if(((str[i]=='1'&&(plag%2)==0)||(str[i]=='0'&&(plag%2)==1)))
{
ptr++ ;
plag++ ;
}
}
cout<<min(ctr,ptr)<<"\n" ;
}
return 0;
}
455A - Boredom | 1099A - Snowball |
1651D - Nearest Excluded Points | 599A - Patrick and Shopping |
237A - Free Cash | 1615B - And It's Non-Zero |
1619E - MEX and Increments | 34B - Sale |
1436A - Reorder | 1363C - Game On Leaves |
1373C - Pluses and Minuses | 1173B - Nauuo and Chess |
318B - Strings of Power | 1625A - Ancient Civilization |
864A - Fair Game | 1663B - Mike's Sequence |
448A - Rewards | 1622A - Construct a Rectangle |
1620A - Equal or Not Equal | 1517A - Sum of 2050 |
620A - Professor GukiZ's Robot | 1342A - Road To Zero |
1520A - Do Not Be Distracted | 352A - Jeff and Digits |
1327A - Sum of Odd Integers | 1276A - As Simple as One and Two |
812C - Sagheer and Nubian Market | 272A - Dima and Friends |
1352C - K-th Not Divisible by n | 545C - Woodcutters |